API Endpoints
Response
- 200: Success
- 403: Forbidden
- 400: Bad Request
Auth
auth_keycloak.js
Forget Password
- Route:
/fogetPasswordKeycloak - Method: POST
- Body:
realm, email - Related API:
- access:
POST /user/resetPassword
- Return Format:
- Success: 200
res.json({ success: true }) - Failure: 500
{ success: false, error: 'Invalid access' }
calllog.js
Create Calllog
- Route:
/ua/calllog - Method: POST
- Body:
user, phone, start, end, duration, idContact - Description: Creates a new call log entry with the specified details.
- Related API:
- access:
POST /callcenter/${idCallcenter}/calllog - access:
GET /${versionApi}/callcenter/${user.idCallcenter}/contacts/search
- Return Format:
- Success: 200
res.json(response.data) - Failure: 400
{ success: false, error: 'Invalid input' }
integration.js
Create Integration
- Route:
/ua/integration/:template_name/endpoint/:endpoint_name - Method: POST
- Body:
user, phone, start, end, duration, idContact - Related API:
- integration:
POST /api/integrator/${template_name}/endpoint/${endpoint_name}
- Return Format:
- Success: 200
res.status(response.status).json(response.data) - Failure: 400
{ success: false, error: { message: error.message } }
nexmo.js
Get Inbound SMS from Nexmo
- Route:
/inbound-sms - Method: GET
- Query Parameters:
text, msisdn, to, api-key, idCallcenter - Related API:
- Access:
GET /nexmos - Access:
GET /callcenter/${idCallcenter}/phone - Access:
POST /callcenter/${idCallcenter}/contact - Access:
GET /callcenter/${idCallcenter}/contact/${idContact}/activities - Access:
GET /user/search - Access:
POST /callcenter/${idCallcenter}/contact/${idContact}/activity
- Return Format:
- Success: 200
res.json(response.data) - Failure: 400
{ success: false, error: { message: error.message } }
activity.js
- Route:
/contact/:contact_id/activities - Method: GET
- Params:
contact_id - Query Parameters:
page, limit, type - Related API:
- Access:
GET /callcenter/${user.idCallcenter}/contact/${contact_id} - Access:
GET /callcenter/${user.idCallcenter}/contact/${contact_id}/activities - Access:
GET /callcenter/${user.idCallcenter}/agents/all
- Return Format:
- Success: 200
res.json({ success: true, result: list, hasMore }) - Failure: 400
{ success: true, result: [], hasMore: false }
- Route:
/contact/:contact_id/activity - Method: POST
- Params:
contact_id - Body:
req.body - Related API:
- Access:
POST /callcenter/${user.idCallcenter}/contact/${contact_id}/activity - Access:
GET /callcenter/${user.idCallcenter}/agent/${body.body.remindedAgent}
- Return Format:
- Success: 200
res.json(response.data) - Failure: 400
{ success: true, result: null }
Get All Activities
- Route:
/activities - Method: GET
- Related API:
- Access:
GET /callcenter/${user.idCallcenter}/activities - Access:
GET /callcenter/${user.idCallcenter}/agents/all
- Return Format:
- Success: 200
{ success: true, result: list, hasMore } - Failure: 400
{ success: true, result: null }
Get Activity Details
- Route:
/contact/:contact_id/activity/:activity_id - Method: GET
- Params:
contact_id, activity_id - Related API:
- Access:
GET /callcenter/${user.idCallcenter}/contact/${contact_id}/activity/${activity_id}
- Return Format:
- Success: 200
res.json(resp.data) - Failure: 400
{ success: true, result: null }
Update Activity
- Route:
/contact/:contact_id/activity/:activity_id - Method: PUT
- Params:
contact_id, activity_id - Related API:
- Access:
PUT /callcenter/${user.idCallcenter}/contact/${contact_id}/activity/${activity_id} - Access:
GET /callcenter/${user.idCallcenter}/contact/${contact_id}/activity/${activity_id}
- Return Format:
- Success: 200
res.json(resp.data) - Failure: 400
{ success: true, result: null }
Delete Activity
- Route:
/contact/:contact_id/activity/:activity_id - Method: DELETE
- Params:
contact_id, activity_id - Related API:
- Access:
DELETE /callcenter/${user.idCallcenter}/contact/${contact_id}/activity/${activity_id}
- Return Format:
- Success: 200
res.json(response.data) - Failure: 400
{ success: true }
- Route:
/activity/:id/tags - Method: POST
- Params:
id - Body:
req.body - Related API:
- Access:
POST /callcenter/${user.idCallcenter}/activity/${id}/tags
- Return Format:
- Success: 200
res.json(response.data) - Failure: 400
{ success: true, result: null }
- Route:
/activity/:id/tags - Method: DELETE
- Params:
id - Body:
req.body - Related API:
- Access:
DELETE /callcenter/${user.idCallcenter}/activity/${id}/tags
- Return Format:
- Success: 200
res.json(resp.data) - Failure: 400
{ success: true, result: null }
agent.js
All Agents
- Route:
/agents/all - Method: GET
- Related API:
- Access:
GET ${versionApi}/callcenter/${idCallcenter}/agents/all
- Return Format:
- Success: 200
res.json(response.data) - Failure: 400
{ success: false, error: 'Invalid input' }
Update Agent Status
- Route:
/agent/status - Method: PUT
- Body:
req.body - Related API:
- Return Format:
- Success: 200
res.json({ success: true }) - Failure: 400
{ success: false, error: 'Invalid input' }
calllog.js
Create Calllog
- Route:
/calllog - Method: POST
- Body:
user, phone, start, end, duration, idContact - Related API:
- Access:
POST /callcenter/${idCallcenter}/calllog - Access:
POST /${versionApi}/callcenter/${user.idCallcenter}/contacts/search
- Return Format:
- Success: 200
res.json(response.data) - Failure: 400
{ success: false, error: 'Invalid input' }
Get All Calllogs
- Route:
/calllogs - Method: GET
- Query:
page, limit, filter - Related API:
- Access:
POST /callcenter/${user.idCallcenter}/activities - Access:
GET /callcenter/${idCallcenter}/calllogs
- Return Format:
- Success: 200
{ success: true, result: result, hasMore: resp.data.hasMore } - Failure: 400
{ success: false, error: 'Invalid input' }
Get Calllog by ID
- Route:
/calllog/:id - Method: GET
- Params:
id - Related API:
- Access:
GET /callcenter/${idCallcenter}/calllog/${req.params.id}
- Return Format:
- Success: 200
res.json(response) - Failure: 400
{ success: false, error: 'Invalid input' }
Get Calllogs by Phone Number
- Route:
/calllogs/phone/:phone - Method: GET
- Params:
phone - Query:
page, limit, filter - Related API:
- Access:
GET /callcenter/${user.idCallcenter}/phone/${phone}/activities
- Return Format:
- Success: 200
{ success: true, result: result, hasMore: resp.data.hasMore } - Failure: 400
{ success: false, error: 'Invalid input' }
- Route:
/contactfields/all - Method: GET
- Body:
name, type, idCallcenter - Related API:
- Access:
GET /callcenter/${user.idCallcenter}/contactfields/all
- Return Format:
- Success: 200
res.json(response.data) - Failure: 400
{ success: false, error: 'Invalid input' }
- Route:
/contactgroups - Method: GET
- Related API:
- Access:
GET /callcenter/${idCallcenter}/contactgroups
- Return Format:
- Success: 200
res.json(response.data) - Failure: 400
{ success: false, error: { message: error.message } }
- Route:
/contactgroups/search - Method: GET
- Related API:
- Access:
GET /callcenter/${idCallcenter}/contactgroups/search
- Return Format:
- Success: 200
res.json(response.data) - Failure: 400
{ success: false, error: { message: error.message } }
- Route:
/contactgroup/:id/contacts - Method: GET
- Params:
id - Related API:
- Access:
GET /callcenter/${idCallcenter}/contactgroup/${id}/contacts
- Return Format:
- Success: 200
res.json(response.data) - Failure: 400
{ success: false, error: { message: error.message } }
- Route:
/contactgroup/:id/contacts - Method: POST
- Params:
id - Body:
req.body - Related API:
- Access:
POST /callcenter/${idCallcenter}/contactgroup/${id}/contacts
- Return Format:
- Success: 200
res.json(response.data) - Failure: 400
{ success: false, error: { message: error.message } }
- Route:
/contactgroup/:id/contacts - Method: DELETE
- Params:
id - Body:
req.body - Related API:
- Access:
DELETE /callcenter/${idCallcenter}/contactgroup/${id}/contacts
- Return Format:
- Success: 200
res.json(response.data) - Failure: 400
{ success: false, error: { message: error.message } }
- Route:
/contactgroup/:id/contacts/search - Method: GET
- Params:
id - Related API:
- Access:
GET /callcenter/${idCallcenter}/contactgroup/${id}/contacts/search
- Return Format:
- Success: 200
res.json(response.data) - Failure: 400
{ success: false, error: { message: error.message } }
- Route:
/contacts - Method: GET
- Related API:
- Access:
GET /callcenter/${idCallcenter}/contacts
- Return Format:
- Success: 200
res.json(response.data) - Failure: 400
{ success: false, error: { message: error.message } }
- Route:
/contacts/search - Method: GET
- Related API:
- Access:
GET /callcenter/${idCallcenter}/contacts/search
- Return Format:
- Success: 200
res.json(resp.data) - Failure: 400
{ success: false, error: { message: error.message } }
- Route:
/contact - Method: POST
- Body:
req.body - Related API:
- Access:
POST /callcenter/${idCallcenter}/contact
- Return Format:
- Success: 200
res.json(response.data) - Failure: 400
{ success: false, error: { message: error.message } }
- Route:
/contact/:id - Method: GET
- Params:
id - Related API:
- Access:
GET /callcenter/${idCallcenter}/contact/${id}
- Return Format:
- Success: 200
res.json(response.data) - Failure: 400
{ success: false, error: { message: error.message } }
- Route:
/contact/:id - Method: PUT
- Params:
id - Body:
req.body - Related API:
- Access:
PUT /callcenter/${idCallcenter}/contact/${id}
- Return Format:
- Success: 200
res.json(response.data) - Failure: 400
{ success: false, error: { message: error.message } }
- Route:
/contact/:id - Method: DELETE
- Params:
id - Related API:
- Access:
DELETE /callcenter/${idCallcenter}/contact/${id}
- Return Format:
- Success: 200
res.json(response.data) - Failure: 400
{ success: false, error: { message: error.message } }
integration.js
Create HubSpot Engagement
- Route:
/hubspot/engagement - Method: POST
- Body:
req.body - Related API:
- Integration:
POST /api/hubspot/engagement
- Return Format:
- Success: 200
res.status(response.status).json(response.data) - Failure: 500
{ success: false, error: { message: error.message } }
Get HubSpot Engagement by ID
- Route:
/hubspot/engagement/:id - Method: GET
- Params:
id - Related API:
- Integration:
GET /api/hubspot/engagement/${req.params.id}
- Return Format:
- Success: 200
res.status(response.status).json(response.data) - Failure: 500
{ success: false, error: { message: error.message } }
Update HubSpot Engagement by ID
- Route:
/hubspot/engagement/:id - Method: PUT
- Params:
id - Related API:
- Integration:
GET /api/hubspot/engagement/${id} - Integration:
PUT /api/hubspot/engagement/${id}
- Return Format:
- Success: 200
res.json(response.data) - Failure: 500
{ success: false, error: { message: error.message } }
- Route:
/hubspot/contacts/search - Method: GET
- Related API:
- Integration:
GET /api/hubspot/contacts/search
- Return Format:
- Success: 200
res.status(response.status).json(response.data) - Failure: 500
{ success: false, error: { message: error.message } }
- Route:
/hubspot/contact - Method: POST
- Body:
req.body - Related API:
- Integration:
POST /api/hubspot/contact
- Return Format:
- Success: 200
res.status(response.status).json(response.data) - Failure: 500
{ success: false, error: { message: error.message } }
Get HubSpot Tickets
- Route:
/hubspot/tickets - Method: GET
- Related API:
- Integration:
GET /api/hubspot/tickets/search?id=${req.query.id}
- Return Format:
- Success: 200
res.status(response.status).json(response.data) - Failure: 500
{ success: false, error: { message: error.message } }
Create HubSpot Ticket
- Route:
/hubspot/ticket - Method: POST
- Related API:
- Integration:
POST /api/hubspot/ticket
- Return Format:
- Success: 200
res.status(response.status).json(response.data) - Failure: 500
{ success: false, error: { message: error.message } }
Create HubSpot Association
- Route:
/hubspot/association - Method: POST
- Body:
req.body - Related API:
- Integration:
POST /api/hubspot/association
- Return Format:
- Success: 200
res.status(response.status).json(response.data) - Failure: 500
{ success: false, error: { message: error.message } }
Get Recent HubSpot Deals
- Route:
/hubspot/deals/recent - Method: GET
- Query:
req.query - Related API:
- Integration:
GET /api/hubspot/deals/recent
- Return Format:
- Success: 200
res.status(response.status).json(response.data) - Failure: 500
{ success: false, error: { message: error.message } }
Search Integrator
- Route:
/integrator/search - Method: GET
- Query:
host, phone - Related API:
- Integration:
POST/api/integrator/${endpoint_name}
- Return Format:
- Success: 200
res.status(response.status).json(response.data) - Failure: 500
{ success: false, error: { message: error.message } }
Create Integrator Endpoint
- Route:
/integrator/:endpoint - Method: POST
- Query:
host - Related API:
- Integration:
POST /api/integrator/${endpoint_name}
- Return Format:
- Success: 200
res.status(response.status).json(response.data) - Failure: 500
{ success: false, error: { message: error.message } }
Create Integration by Template and Endpoint
- Route:
/integration/:template_name/endpoint/:endpoint_name - Method: POST
- Body:
req.body - Params:
template_name, endpoint_name - Related API:
- Integration:
POST /api/integrator/${template_name}/endpoint/${endpoint_name}
- Return Format:
- Success: 200
res.status(response.status).json(response.data) - Failure: 500
{ success: false, error: { message: error.message } }
Get Vietguy SMS
- Route:
/vietguy/sms - Method: GET
- Query:
req.query - Related API:
- Integration:
GET /api/vietguy/sms
- Return Format:
- Success: 200
res.status(response.status).json(response.data) - Failure: 500
{ success: false, error: { message: error.message } }
Search Nhanh Customers
- Route:
/nhanh/customer/search - Method: GET
- Query:
req.query - Related API:
- Integration:
GET /api/nhanh/customer/search
- Return Format:
- Success: 200
res.status(response.status).json(response.data) - Failure: 500
{ success: false, error: { message: error.message } }
Get Sapo Customers
- Route:
/sapo/customers - Method: GET
- Query:
req.query - Body:
req.body - Related API:
- Integration:
GET /api/sapo/customers
- Return Format:
- Success: 200
res.status(response.status).json(response.data) - Failure: 500
{ success: false, error: { message: error.message } }
Create Sapo Customer Note
- Route:
/sapo/customers/note - Method: POST
- Query:
req.query - Body:
req.body - Related API:
- Integration:
POST /api/sapo/customers/note
- Return Format:
- Success: 200
res.status(response.status).json(response.data) - Failure: 500
{ success: false, error: { message: error.message } }
Get Sapo Accounts
- Route:
/sapo/accounts - Method: GET
- Query:
req.query - Related API:
- Integration:
GET /api/sapo/accounts
- Return Format:
- Success: 200
res.status(response.status).json(response.data) - Failure: 500
{ success: false, error: { message: error.message } }
Get Sapo Account Details Integration
- Route:
/sapo/accounts/:id - Method: GET
- Params:
id - Related API:
- Integration:
GET /api/sapo/accounts/${req.params.id}
- Return Format:
- Success: 200
res.status(response.status).json(response.data) - Failure: 500
{ success: false, error: { message: error.message } }
Get Sapo Orders Integration
- Route:
/sapo/orders - Method: GET
- Query:
req.query - Related API:
- Integration:
GET /api/sapo/orders
- Return Format:
- Success: 200
res.status(response.status).json(response.data) - Failure: 500
{ success: false, error: { message: error.message } }
Get Mio Investor by Phone Integration
- Route:
/mio/get-investor-by-phone - Method: GET
- Query:
req.query - Related API:
- Integration:
GET /api/mio/get-investor-by-phone
- Return Format:
- Success: 200
res.status(response.status).json(response.data) - Failure: 500
{ success: false, error: { message: error.message } }
Post Brandname OTP Integration
- Route:
/fpt/push-brandname-otp - Method: POST
- Body:
brandname - Related API:
- Integration:
POST /api/fpt/push-brandname-otp
- Return Format:
- Success: 200
res.status(response.status).json(response.data) - Failure: 500
{ success: false, error: { message: error.message } }
session-iam.js
Session
- Route:
/session - Method: GET
- Related API:
- Return Format:
- Success: 200
{ success: true, result: {...user,sip: sip,status: status}} - Failure: 400
{ success: false, error: 'Invalid input' }
Signout
- Route:
/signout - Method: POST
- Related API:
- Return Format:
- Success: 200
res.json({ success: true }) - Failure: 400
{ success: false, error: 'Invalid input' }
session.js
Signin
- Route:
/signin - Method: POST
- Body:
email, password - Related API:
- Return Format:
- Success: 200
res.json(response) - Failure: 400
{ success: false, error: { message: error.message } }
Session
- Route:
/session - Method: GET
- Related API:
- Return Format:
- Success: 200
res.json({ success: true, result: user }) - Failure: 400
{ success: false, error: 'Invalid input' }
Signout
- Route:
/signout - Method: POST
- Related API:
- Return Format:
- Success: 200
res.json({ success: true }) - Failure: 400
{ success: false, error: 'Invalid input' }
Forget Password
- Route:
/forgetpassword - Method: POST
- Body:
email - Related API:
- Return Format:
- Success: 200
res.json(response.data) - Failure: 400
{ success: false, error: { message: error.message } }
template.js
Create Template
- Route:
/template - Method: POST
- Body:
req.body - Related API:
- Access:
POST /callcenter/${idCallcenter}/template
- Return Format:
- Success: 200
res.json(response.data) - Failure: 400
{ success: false, error: 'Invalid input' }
Get Template by ID
- Route:
/template/:id - Method: GET
- Params:
id - Related API:
- Access:
GET /callcenter/${idCallcenter}/template/${req.params.id}
- Return Format:
- Success: 200
res.json(response.data) - Failure: 400
{ success: false, error: 'Invalid input' }
Delete Template by ID
- Route:
/template/:id - Method: DELETE
- Params:
id - Related API:
- Access:
DELETE /callcenter/${idCallcenter}/template/${req.params.id}
- Return Format:
- Success: 200
res.json(response.data) - Failure: 400
{ success: false, error: 'Invalid input' }
Get All Templates
- Route:
/templates/all - Method: GET
- Related API:
- Access:
GET /callcenter/${idCallcenter}/templates/all
- Return Format:
- Success: 200
res.json(response.data) - Failure: 400
{ success: false, error: 'Invalid input' }